﻿// //   Copyright 2007-2011 Comdiv (F. Sadykov) - http://code.google.com/u/fagim.sadykov/
// //   Supported by Media Technology LTD 
// //    
// //   Licensed under the Apache License, Version 2.0 (the "License");
// //   you may not use this file except in compliance with the License.
// //   You may obtain a copy of the License at
// //    
// //        http://www.apache.org/licenses/LICENSE-2.0
// //    
// //   Unless required by applicable law or agreed to in writing, software
// //   distributed under the License is distributed on an "AS IS" BASIS,
// //   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// //   See the License for the specific language governing permissions and
// //   limitations under the License.
// //   
// //   MODIFICATIONS HAVE BEEN MADE TO THIS FILE
using System;
using System.Collections.Generic;
using Comdiv.QWeb.Binding;

namespace Comdiv.QWeb.Factory {
	public interface IQWebFactory {
		ActionDescriptor GetAction(QWebContext context);
		void ReleaseAction(QWebContext context);
		RenderDescriptor GetRender(QWebContext context);
		void ReleaseRender(QWebContext context);
	    IEnumerable<IActionBinder> GetBinders();
	    IActionBinder GetBinder(Type binderType);
	    void ReleaseBinder(IActionBinder binder);
	    void RegisterAction<T>(string actionname = null) where T:IAction;
	    Type[] GetAllActionTypes();
	    Type[] GetAllRenderTypes();
	    ActionDescriptor[] GetAllActions();
	    void ReleaseExecutor(string name, ActionDescriptor action);
	    void PrepareAllActionsAndRenders();
	    RenderDescriptor[] GetAllRenders();
	}
}